class: center, middle, inverse, title-slide .title[ # Procesando datos con tidyverse ] .subtitle[ ## Dirección Nacional de Estadística Criminal - Ministerio de Seguridad ] --- <style type="text/css"> .remark-slide-content { font-size: 25px; padding: 1em 1em 1em 1em; } <style type="text/css"> .remark-code{ line-height: 1.5; font-size: 80% } @media print { .has-continuation { display: block; } } </style> # Hoja de ruta ## Universo tidyverse ## Presentación de los paquetes `dplyr` y `tidyr` .pull-left[ ## ✔️ dplyr ☑️️ `select()` ☑️️ `filter()` ☑️️ `mutate()` ☑️️ `rename()` ☑️️ `arragne()` ☑️️ `summarise()` ☑️️ `group_by()` ] .pull-right[ ## ✔️ magrittr ☑️ `%>%` ## ✔️ tidyr ☑️ `pivot_longer()` ☑️ `pivot_wider()` ] --- # tidyverse <img src="data:image/png;base64,#img/circuito_del_dato.png" width="50%" style="display: block; margin: auto;" /> -- <img src="data:image/png;base64,#img/circuito_del_dato_tidy.png" width="50%" style="display: block; margin: auto;" /> --- # __Instalación y uso__ * Sólo una vez (por computadora): ```r install.packages("tidyverse") ``` -- * En cada inicio de sesión de R o Rstudio: ```r library(tidyverse) ``` -- .pull-left[ _No es necesario esto:_ ```r install.packages("dplyr") install.packages("tidyr") install.packages("ggplot2") ``` ] .pull-right[ _Ni esto:_ ```r library(dplyr) library(tidyr) library(ggplot2) ``` ] --- # Base de trabajo En el material de la clase se puso a disposición una base de ejercicio. La misma refiere al **Sistema Nacional de Información Criminal (SNIC)**, provista por la Dirección Nacional de Política Criminal - Ministerio de Justicia y Derechos Humanos > [Descarga de la base de datos](https://estadisticascriminales.minseg.gob.ar/datos/snic-departamentos-mes-sexo.csv) -- ### Con la siguiente sentencia puedo importarla a R: ```r base_snic <- read_csv(file = "la_ruta_del_archivo/el_nombre_del_archivo.csv", col_names = TRUE) ``` --- class: middle, center, inverse EL PIPE <img src="data:image/png;base64,#img/pipe.png" width="20%" style="display: block; margin: auto;" /> _<p style="color:grey;" align:"center">Una forma de escribir</p>_ --- # magrittr ### **Sin EL PIPE:** ```r ### Calculo la media round(mean(head(`base_snic$cantidad_victimas`, n =12)), digits = 2) ``` -- ### **Con EL PIPE** ```r ### Cargo la librería library(tidyverse) ### Calculo la media `base_snic$cantidad_victimas` %>% head(n = 12) %>% mean() %>% round(digits = 2) ``` --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse, middle # Práctica 1. En la siguiente sentencia se busca conocer el ***promedio*** de víctimas para las primeras 12 filas de la base (variable *cantidad_victimas*). Identificar el error y corregir: ```r base_snic %>% head(12) %>% mean() ``` --- class: middle, center, inverse <img src="data:image/png;base64,#img/logo dplyr.png" width="30%" style="display: block; margin: auto;" /> --- # dplyr ## Principales funciones del paquete dplyr: <br> | __Función__ | __Acción__ | | :--- | ---: | | `select()` | *selecciona o descarta variables*| | `filter()` | *selecciona filas*| | `mutate()` | *crea / edita variables*| | `rename()` | *renombra variables*| | `group_by()` | *segmenta en funcion de una variable*| | `summarize()` | *genera una tabla de resúmen*| --- class: inverse, middle, center # __select()__ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Elije o descarta columnas de una base de datos</p>_ --- # select() ### La función tiene el siguiente esquema: ```r base_de_datos %>% `select(variable_1, variable_2, variable_n)` ``` --- # select() ### Supongamos que quiero quedarme sólo con las columnas que ayudan a identificar la fecha del delito --- # select() - por nombre de variable ### selecciono las columnas que deseo de la base de datos, no sin antes chequear qué variables contiene la misma: ```r names(base_snic) ``` ``` ## [1] "anio" "provincia_id" ## [3] "provincia_nombre" "dpto_id" ## [5] "dpto_nombre" "codigo_delito_snic_id" ## [7] "codigo_delito_snic_nombre" "mes" ## [9] "victimas_masculino" "victimas_femenino" ## [11] "victimas_no_consta" "cantidad_victimas" ## [13] "cantidad_hechos" ``` --- # select() - por nombre de variable ```r b_snic_seleccion <- base_snic %>% `select(anio, mes, codigo_delito_snic_nombre)` ``` -- ### Chequeo la operación: ```r names(b_snic_seleccion) ``` ``` ## [1] "anio" "mes" ## [3] "codigo_delito_snic_nombre" ``` --- # select() - por posición de la columna ### Supongamos que quiero las columnas __"provincia_nombre"__, __"dpto_nombre"__ y __"cantidad_hechos"__ -- 1) Chequeo la posición de las columnas que deseo: ```r names(base_snic) ``` ``` ## [1] "anio" "provincia_id" ## [3] "provincia_nombre" "dpto_id" ## [5] "dpto_nombre" "codigo_delito_snic_id" ## [7] "codigo_delito_snic_nombre" "mes" ## [9] "victimas_masculino" "victimas_femenino" ## [11] "victimas_no_consta" "cantidad_victimas" ## [13] "cantidad_hechos" ``` --- # select() - por posición de la columna 2) Aplico la función `select()` en base a la posición de las columnas: ```r b_snic_seleccion2 <- base_snic %>% select(3, 5, 13) ``` -- ### chequeo seleccion: ```r names(b_snic_seleccion2) ``` ``` ## [1] "provincia_nombre" "dpto_nombre" "cantidad_hechos" ``` --- count: false # Otra forma de selecionar .panel1-select_1-auto[ ```r *base_snic ``` ] .panel2-select_1-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Otra forma de selecionar .panel1-select_1-auto[ ```r base_snic %>% * select(8:10) ``` ] .panel2-select_1-auto[ ``` ## # A tibble: 1,390,553 x 3 ## mes victimas_masculino victimas_femenino ## <dbl> <dbl> <dbl> ## 1 1 1 0 ## 2 2 2 0 ## 3 3 2 0 ## 4 4 1 2 ## 5 5 5 0 ## 6 6 1 1 ## 7 7 2 0 ## 8 8 2 0 ## 9 9 1 0 ## 10 10 2 1 ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-select_1-auto { color: black; width: 35.9333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_1-auto { color: black; width: 62.0666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_2-auto[ ```r *base_snic ``` ] .panel2-select_2-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Otra forma de selecionar .panel1-select_2-auto[ ```r base_snic %>% * select(dpto_id:codigo_delito_snic_nombre) ``` ] .panel2-select_2-auto[ ``` ## # A tibble: 1,390,553 x 4 ## dpto_id dpto_nombre codigo_delito_snic_id codigo_delito_snic_nombre ## <chr> <chr> <chr> <chr> ## 1 02001 Comuna 1 1 Homicidios dolosos ## 2 02001 Comuna 1 1 Homicidios dolosos ## 3 02001 Comuna 1 1 Homicidios dolosos ## 4 02001 Comuna 1 1 Homicidios dolosos ## 5 02001 Comuna 1 1 Homicidios dolosos ## 6 02001 Comuna 1 1 Homicidios dolosos ## 7 02001 Comuna 1 1 Homicidios dolosos ## 8 02001 Comuna 1 1 Homicidios dolosos ## 9 02001 Comuna 1 1 Homicidios dolosos ## 10 02001 Comuna 1 1 Homicidios dolosos ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-select_2-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_2-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_3-auto[ ```r *base_snic ``` ] .panel2-select_3-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Otra forma de selecionar .panel1-select_3-auto[ ```r base_snic %>% * select(starts_with("victimas")) ``` ] .panel2-select_3-auto[ ``` ## # A tibble: 1,390,553 x 3 ## victimas_masculino victimas_femenino victimas_no_consta ## <dbl> <dbl> <dbl> ## 1 1 0 0 ## 2 2 0 0 ## 3 2 0 0 ## 4 1 2 0 ## 5 5 0 0 ## 6 1 1 0 ## 7 2 0 0 ## 8 2 0 0 ## 9 1 0 0 ## 10 2 1 0 ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-select_3-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_3-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_3-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_4-auto[ ```r *base_snic ``` ] .panel2-select_4-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Otra forma de selecionar .panel1-select_4-auto[ ```r base_snic %>% * select(ends_with("nombre")) ``` ] .panel2-select_4-auto[ ``` ## # A tibble: 1,390,553 x 3 ## provincia_nombre dpto_nombre codigo_delito_snic_nombre ## <chr> <chr> <chr> ## 1 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 2 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 3 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 4 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 5 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 6 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 7 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 8 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 9 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## 10 Ciudad Autónoma de Buenos Aires Comuna 1 Homicidios dolosos ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-select_4-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_4-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_4-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_5-auto[ ```r *base_snic ``` ] .panel2-select_5-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Otra forma de selecionar .panel1-select_5-auto[ ```r base_snic %>% * select(contains("delito")) ``` ] .panel2-select_5-auto[ ``` ## # A tibble: 1,390,553 x 2 ## codigo_delito_snic_id codigo_delito_snic_nombre ## <chr> <chr> ## 1 1 Homicidios dolosos ## 2 1 Homicidios dolosos ## 3 1 Homicidios dolosos ## 4 1 Homicidios dolosos ## 5 1 Homicidios dolosos ## 6 1 Homicidios dolosos ## 7 1 Homicidios dolosos ## 8 1 Homicidios dolosos ## 9 1 Homicidios dolosos ## 10 1 Homicidios dolosos ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-select_5-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_5-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_5-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse, middle ## Práctica 1) Crear un objeto en donde importamos la base del SNIC (recordar tener en cuenta la extensión del archivo) 2) Crear otro objeto en donde selecciono 3 columnas de interés según sus nombres 3) Crear otro objeto en donde selecciono 3 columnas de interés según su posición --- class: inverse, middle, center # filter() <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Define los casos (filas) en base a una condición</p>_ --- # filter() ### La función tiene el siguiente esquema: ```r base_de_datos %>% `filter(variable_x >= categoria)` ``` --- # filter() ### **Caso:** Supongamos que deseo quedarme sólo con la información correspondiente al año 2017, no sin antes: - Chequear cómo se llama la variable que contiene los años: ```r `names(base_snic)` ``` ``` ## [1] "anio" "provincia_id" ## [3] "provincia_nombre" "dpto_id" ## [5] "dpto_nombre" "codigo_delito_snic_id" ## [7] "codigo_delito_snic_nombre" "mes" ## [9] "victimas_masculino" "victimas_femenino" ## [11] "victimas_no_consta" "cantidad_victimas" ## [13] "cantidad_hechos" ``` --- - Chequear las categorías que contiene esa variable: ```r `unique(base_snic$anio)` ``` ``` ## [1] 2017 2018 2019 2020 ``` --- count: false # filter() .panel1-filter-auto[ ```r *base_snic ``` ] .panel2-filter-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # filter() .panel1-filter-auto[ ```r base_snic %>% * filter(anio == 2017) ``` ] .panel2-filter-auto[ ``` ## # A tibble: 344,422 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 344,412 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] <style> .panel1-filter-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # filter() #### Operadores para filtrar: <br> .pull-left[ |Condición |Acción | | :--- | :--- | | | | | "==" | *igual a* | | "%in%" | *incluye* | | "!=" | *distinto a* | | ">" | *mayor a* | | "<" | *menor a* | | ">=" | *mayor o igual a* | | "<=" | *menor o igual a* | ] .pull-right[ | Operador | Descripción | | :--- | :--- | | | | | "&" | *y* - Cuando se cumplen ambas condiciones | | | | *o* - Cuando se cumple una u otra condición | ] --- # filter() <br><br> ### **Caso:** Quiero estudiar los delitos de **homicidios dolosos** que sucedieron en la provincia de **Neuquén** durante los años **2018** y **2019**: --- count: false #filter .panel1-filter_1-auto[ ```r *base_snic ``` ] .panel2-filter_1-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false #filter .panel1-filter_1-auto[ ```r base_snic %>% * filter(anio == 2018 | anio == 2019) ``` ] .panel2-filter_1-auto[ ``` ## # A tibble: 695,011 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 4 0 ## 2 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 1 ## 3 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 6 1 ## 4 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 2 0 ## 5 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 1 1 ## 6 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 2 1 ## 7 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 1 0 ## 8 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 0 1 ## 9 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 1 0 ## # ... with 695,001 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false #filter .panel1-filter_1-auto[ ```r base_snic %>% filter(anio == 2018 | anio == 2019) %>% * filter(codigo_delito_snic_nombre == "Homicidios dolosos") ``` ] .panel2-filter_1-auto[ ``` ## # A tibble: 12,619 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 4 0 ## 2 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 1 ## 3 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 6 1 ## 4 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 2 0 ## 5 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 1 1 ## 6 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 2 1 ## 7 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 1 0 ## 8 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 0 1 ## 9 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2018 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 1 0 ## # ... with 12,609 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false #filter .panel1-filter_1-auto[ ```r base_snic %>% filter(anio == 2018 | anio == 2019) %>% filter(codigo_delito_snic_nombre == "Homicidios dolosos") %>% * filter(provincia_nombre == "Neuquén") ``` ] .panel2-filter_1-auto[ ``` ## # A tibble: 384 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2018 58 Neuquén 58007 Aluminé 1 Homici~ 1 0 0 ## 2 2018 58 Neuquén 58007 Aluminé 1 Homici~ 2 0 0 ## 3 2018 58 Neuquén 58007 Aluminé 1 Homici~ 3 0 0 ## 4 2018 58 Neuquén 58007 Aluminé 1 Homici~ 4 0 0 ## 5 2018 58 Neuquén 58007 Aluminé 1 Homici~ 5 0 0 ## 6 2018 58 Neuquén 58007 Aluminé 1 Homici~ 6 0 0 ## 7 2018 58 Neuquén 58007 Aluminé 1 Homici~ 7 0 0 ## 8 2018 58 Neuquén 58007 Aluminé 1 Homici~ 8 0 0 ## 9 2018 58 Neuquén 58007 Aluminé 1 Homici~ 9 0 0 ## 10 2018 58 Neuquén 58007 Aluminé 1 Homici~ 10 0 0 ## # ... with 374 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] <style> .panel1-filter_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # filter ## ¿Se puede todo en un sólo `filter()`? --- count: false #filter .panel1-filter_1a-auto[ ```r *base_snic ``` ] .panel2-filter_1a-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false #filter .panel1-filter_1a-auto[ ```r base_snic %>% * filter((anio == 2018 | anio == 2019) & * codigo_delito_snic_nombre == "Homicidios dolosos" & * provincia_nombre == "Neuquén") ``` ] .panel2-filter_1a-auto[ ``` ## # A tibble: 384 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2018 58 Neuquén 58007 Aluminé 1 Homici~ 1 0 0 ## 2 2018 58 Neuquén 58007 Aluminé 1 Homici~ 2 0 0 ## 3 2018 58 Neuquén 58007 Aluminé 1 Homici~ 3 0 0 ## 4 2018 58 Neuquén 58007 Aluminé 1 Homici~ 4 0 0 ## 5 2018 58 Neuquén 58007 Aluminé 1 Homici~ 5 0 0 ## 6 2018 58 Neuquén 58007 Aluminé 1 Homici~ 6 0 0 ## 7 2018 58 Neuquén 58007 Aluminé 1 Homici~ 7 0 0 ## 8 2018 58 Neuquén 58007 Aluminé 1 Homici~ 8 0 0 ## 9 2018 58 Neuquén 58007 Aluminé 1 Homici~ 9 0 0 ## 10 2018 58 Neuquén 58007 Aluminé 1 Homici~ 10 0 0 ## # ... with 374 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] <style> .panel1-filter_1a-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter_1a-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter_1a-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse, middle # Práctica - Crear un objeto que contenga las variables __provincia_nombre__, __mes__, __cantidad_hechos__. - A partir del objeto creado, crear uno nuevo aplicando un filtro para quedarnos sólo con la cantidad de hechos que sucedieron en **Catamarca**, durante el mes de **enero**. --- class: inverse, middle, center # _mutate()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Crea / edita variables (columnas)</p>_ --- # mutate() ### La función tiene el siguiente esquema: ```r base_de_datos %>% `mutate(var_nueva = var_1 + var_2)` ``` -- <br><br> ### **Caso:** Quiero crear una variable que contenga la información del año y del mes en el mismo valor --- count: false # mutate() .panel1-mutate_1-auto[ ```r *base_snic ``` ] .panel2-mutate_1-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_snic %>% * select(anio, mes) ``` ] .panel2-mutate_1-auto[ ``` ## # A tibble: 1,390,553 x 2 ## anio mes ## <dbl> <dbl> ## 1 2017 1 ## 2 2017 2 ## 3 2017 3 ## 4 2017 4 ## 5 2017 5 ## 6 2017 6 ## 7 2017 7 ## 8 2017 8 ## 9 2017 9 ## 10 2017 10 ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_snic %>% select(anio, mes) %>% * filter(anio == 2020) ``` ] .panel2-mutate_1-auto[ ``` ## # A tibble: 351,120 x 2 ## anio mes ## <dbl> <dbl> ## 1 2020 1 ## 2 2020 2 ## 3 2020 3 ## 4 2020 4 ## 5 2020 5 ## 6 2020 6 ## 7 2020 7 ## 8 2020 8 ## 9 2020 9 ## 10 2020 10 ## # ... with 351,110 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_snic %>% select(anio, mes) %>% filter(anio == 2020) %>% * mutate(periodo = paste0(anio, "_", mes)) ``` ] .panel2-mutate_1-auto[ ``` ## # A tibble: 351,120 x 3 ## anio mes periodo ## <dbl> <dbl> <chr> ## 1 2020 1 2020_1 ## 2 2020 2 2020_2 ## 3 2020 3 2020_3 ## 4 2020 4 2020_4 ## 5 2020 5 2020_5 ## 6 2020 6 2020_6 ## 7 2020 7 2020_7 ## 8 2020 8 2020_8 ## 9 2020 9 2020_9 ## 10 2020 10 2020_10 ## # ... with 351,110 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-mutate_1-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate_1-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # mutate() + case_when() ### Función complementaria: `case_when()`, utilizada para recodificación de variables: <img src="data:image/png;base64,#img/mutate_case.png" width="100%" style="display: block; margin: auto;" /> --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_2-auto[ ```r *base_snic ``` ] .panel2-mutate_2-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_2-auto[ ```r base_snic %>% * select(anio, mes, cantidad_victimas) ``` ] .panel2-mutate_2-auto[ ``` ## # A tibble: 1,390,553 x 3 ## anio mes cantidad_victimas ## <dbl> <dbl> <dbl> ## 1 2017 1 1 ## 2 2017 2 2 ## 3 2017 3 2 ## 4 2017 4 3 ## 5 2017 5 5 ## 6 2017 6 2 ## 7 2017 7 2 ## 8 2017 8 2 ## 9 2017 9 1 ## 10 2017 10 3 ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_2-auto[ ```r base_snic %>% select(anio, mes, cantidad_victimas) %>% * mutate(mes_nombre = case_when(mes == 1 ~ "Enero", * mes == 2 ~ "Febrero", * mes == 3 ~ "Marzo", * mes == 4 ~ "Abril", * mes == 5 ~ "Mayo", * mes == 6 ~ "Junio", * mes == 7 ~ "Julio", * mes == 8 ~ "Agosto", * mes == 9 ~ "Septiembre", * mes == 10 ~ "Octubre", * mes == 11 ~ "Noviembre", * mes == 12 ~ "Diciembre")) ``` ] .panel2-mutate_2-auto[ ``` ## # A tibble: 1,390,553 x 4 ## anio mes cantidad_victimas mes_nombre ## <dbl> <dbl> <dbl> <chr> ## 1 2017 1 1 Enero ## 2 2017 2 2 Febrero ## 3 2017 3 2 Marzo ## 4 2017 4 3 Abril ## 5 2017 5 5 Mayo ## 6 2017 6 2 Junio ## 7 2017 7 2 Julio ## 8 2017 8 2 Agosto ## 9 2017 9 1 Septiembre ## 10 2017 10 3 Octubre ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-mutate_2-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate_2-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # mutate() ## Caso: _Quiero conocer la cantidad de victimas pero en rangos:_ -- Breve chequeo de la distribución de la variable numérica: ```r `summary(base_snic$cantidad_victimas)` ``` ``` ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 0.0 0.0 0.0 4.6 1.0 1534.0 1086633 ``` -- ```r summary(base_snic$cantidad_victimas[base_snic$cantidad_victimas > 0]) ``` ``` ## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## 1.0 1.0 3.0 14.1 9.0 1534.0 1086633 ``` --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r *base_snic ``` ] .panel2-mutate_3-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r base_snic %>% * select(anio, mes, cantidad_victimas) ``` ] .panel2-mutate_3-auto[ ``` ## # A tibble: 1,390,553 x 3 ## anio mes cantidad_victimas ## <dbl> <dbl> <dbl> ## 1 2017 1 1 ## 2 2017 2 2 ## 3 2017 3 2 ## 4 2017 4 3 ## 5 2017 5 5 ## 6 2017 6 2 ## 7 2017 7 2 ## 8 2017 8 2 ## 9 2017 9 1 ## 10 2017 10 3 ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r base_snic %>% select(anio, mes, cantidad_victimas) %>% * filter(mes == 2) ``` ] .panel2-mutate_3-auto[ ``` ## # A tibble: 117,009 x 3 ## anio mes cantidad_victimas ## <dbl> <dbl> <dbl> ## 1 2017 2 2 ## 2 2017 2 2 ## 3 2017 2 3 ## 4 2017 2 0 ## 5 2017 2 385 ## 6 2017 2 128 ## 7 2017 2 26 ## 8 2017 2 8 ## 9 2017 2 0 ## 10 2017 2 1 ## # ... with 116,999 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r base_snic %>% select(anio, mes, cantidad_victimas) %>% filter(mes == 2) %>% * mutate(cant_victimas_rango = case_when(cantidad_victimas == 0 ~ "0", * cantidad_victimas %in% c(1:10) ~ "entre 1 y 10", * cantidad_victimas %in% c(11:20) ~ "entre 11 y 20", * cantidad_victimas %in% c(21:30) ~ "entre 21 y 30", * cantidad_victimas %in% c(31:40) ~ "entre 31 y 40", * cantidad_victimas > 40 ~ "mayor a 40")) ``` ] .panel2-mutate_3-auto[ ``` ## # A tibble: 117,009 x 4 ## anio mes cantidad_victimas cant_victimas_rango ## <dbl> <dbl> <dbl> <chr> ## 1 2017 2 2 entre 1 y 10 ## 2 2017 2 2 entre 1 y 10 ## 3 2017 2 3 entre 1 y 10 ## 4 2017 2 0 0 ## 5 2017 2 385 mayor a 40 ## 6 2017 2 128 mayor a 40 ## 7 2017 2 26 entre 21 y 30 ## 8 2017 2 8 entre 1 y 10 ## 9 2017 2 0 0 ## 10 2017 2 1 entre 1 y 10 ## # ... with 116,999 more rows ## # i Use `print(n = ...)` to see more rows ``` ] <style> .panel1-mutate_3-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate_3-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate_3-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse # Práctica - Crear una variable nueva que recodifique los meses en semestre. Esto es, las categorías de la variable deberán ser **1er semestre** y **2do semestre**. - Crear otra variable que recodifique en 5 rangos los valores de la columna **cantidad_hechos**